//
//  AppDelegate.swift
//  SinaWeibo25
//
//  Created by David on 16/3/5.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
        //设置全局颜色
        setThemeColor()
        
        //注册通知
        registerNotification()
        
        //需要手动实例化window
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor()
        //设置根视图控制器
        defaultRootViewController()
        
        //可视化window
        window?.makeKeyAndVisible()
        
        return true
    }
    
    
    //通知的监听方法 一般会带一个通知对象
    @objc private func changeRootVC(n: NSNotification) {
        print(n)
//        let object = n.object
        //如果object 不为nil(oauth) 根视图控制器应该是 Welcome
        //如果为nil  根视图控制器就应该是 MainViewController
        window?.rootViewController = (n.object == nil) ? MainViewController() : WelcomeViewController()
    }
    
    /*
    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SinaWeibo25.AppDelegate c
    
    unrecognized selector sent to instance 0x7fef12d116f0'
    //监听的方法没有实现
    */
    private func registerNotification() {
        //注册通知
        //object: 关注谁发出的通知  如果为 nil  就是所有对象发出的通知都可以接受 
        // 通知(object 不为 nil 表示的是通知) 广播(object 为nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeRootVC:", name: SwitchRootViewController, object: nil)
    }
    
    
    
    //设置根视图控制器
    //判断用户是否登录  用户登录显示欢迎页面 用户未登录 显示访客视图
    private func defaultRootViewController() {
        let rootVC = UserAccount.shareAccount.userLogin ? WelcomeViewController() : MainViewController()
        window?.rootViewController = rootVC
    }
    
    
    private func setThemeColor() {
        //设置导航条的主题色 一经设置  全局有效
        //设置全局色 需要注意: 全局颜色的设置 必须在控件实例化之前设置  要提前设置
        UINavigationBar.appearance().tintColor = themeColor
        UITabBar.appearance().tintColor = themeColor
    }

    //移除通知 只有程序退出才会被调用
    //编码规范而已
    deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }


}

